//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//	int n, a;
//	scanf("%d", &n);
//	for (int i=n;i>=0;i--)
//	{
//		scanf("%d",&a);
//		if (a)
//		{
//			if (i != n && a > 0) 
//			{
//				printf("+");
//			}
//			if (i == 0)
//			{
//				printf("%d", a);
//			}
//			if (i == 1 && abs(a) > 1)
//			{
//				printf("%dx", a);
//			}
//			if (i == 1 && a == -1)
//			{
//				printf("-x");
//			}
//			if (i == 1 && a == 1)
//			{
//				printf("x");
//			}
//			if (i > 1 && abs(a) > 1)
//			{
//				printf("%dx^%d", a, i);
//			}
//			if (i > 1 && a == 1)
//			{
//				printf("x^%d", i);
//			}
//			if (i > 1 && a == -1)
//			{
//				printf("-x^%d", i);
//			}
//			
//		}
//		
//
//	}
//	
//	return 0;
//}


#define _CRT_SECURE_NO_WARNINGS
#define maxn 10005
#include<stdio.h>
int N;
int ret1,ret2;
int a[maxn],b[maxn];
void check()
{
	for (int i = 2;i < N;i++)
	{
		b[i] = a[i] - b[i - 1] - ((N >= 2) ? b[i - 2]:0);
		if (!(b[i] == 0 || b[i] == 1))
		{
			return;
		}

	}
	if (b[N] != a[N] - b[N - 1] - ((N >= 2) ? b[N - 2] : 0))
	{
		return;
	}
}
int main()
{
	scanf("%d",&N);
	for (int i = 0;i < N;i++)
	{
		scanf("%d",&a[i]);
	}
	bool flag1 = false, flag2 = false;
	b[1] = 1;
	b[0] = 0;
	check();
	flag1 = (b[N] == a[N] - b[N] - (N >= 2 ? b[N - 2] : 0));
	b[1] = 0;
	check();
	flag2 = (b[N] == a[N] - b[N] - (N >= 2 ? b[N - 2] : 0));
	if (flag1 && flag2)
		printf("2");
	else if (flag1 || flag2)
		printf("1");
	else
		printf("0");
	return 0;
}